home *** CD-ROM | disk | FTP | other *** search
/ Libris Britannia 4 / science library(b).zip / science library(b) / PROGRAMM / PASCAL / 1463.ZIP / DRAW-2D.ARC / PTDIST.PAS < prev    next >
Pascal/Delphi Source File  |  1986-11-13  |  2KB  |  50 lines

  1. PROCEDURE PTDIST(PX,PY,XONE,YONE:REAL;  VAR DIST:REAL);
  2.    BEGIN
  3.      DIST := SQRT( (XONE-PX)*(XONE-PX) + (YONE-PY)*(YONE-PY) );
  4.    END;
  5. PROCEDURE LNDIST(PX,PY,XONE,YONE,XTWO,YTWO:REAL; VAR DIST:REAL);
  6.    VAR
  7.      REGION:INTEGER;
  8.      B1,D1,D2,D3:REAL;
  9.    BEGIN
  10.      D1 := SQRT( (XONE-PX)*(XONE-PX) + (YONE-PY)*(YONE-PY) );
  11.      D2 := SQRT( (XTWO-PX)*(XTWO-PX) + (YTWO-PY)*(YTWO-PY) );
  12.      D3 := SQRT( (XONE-XTWO)*(XONE-XTWO) + (YONE-YTWO)*(YONE-YTWO) );
  13.      (* DETERMINE THE REGION *)
  14.      IF D1 > D2 THEN
  15.         IF D1 >= SQRT( (D2*D2) + (D3*D3) ) THEN REGION := 3 ELSE REGION := 2
  16.       ELSE
  17.         IF D2 >= SQRT( (D1*D1) + (D3*D3) ) THEN REGION := 1 ELSE REGION := 2;
  18.      CASE REGION OF
  19.      1: DIST := D1;
  20.      2: BEGIN
  21.           B1 := ( (D1*D1) - (D2*D2) + (D3*D3) )/(2.0*D3);
  22.           DIST := SQRT( (D1*D1) - (B1*B1) );
  23.         END;
  24.      3: DIST := D2;
  25.      END; (*CASE*)
  26.    END;
  27. PROCEDURE CIRDIST(PX,PY,XONE,XTWO,RAD:REAL; VAR DIST:REAL);
  28.    VAR
  29.      DX:REAL;
  30.    BEGIN
  31.      PTDIST(PX,PY,XONE,XTWO,DX);
  32.      DIST := ABS(DX-RAD);
  33.    END;
  34. PROCEDURE BXDIST(PX,PY,X1,Y1,X2,Y2,X3,Y3:REAL; VAR DIST:REAL);
  35.    VAR
  36.      X4,Y4,D1,D2,D3,D4:REAL;
  37.    BEGIN
  38.      X4 := X3 - (X2-X1);
  39.      Y4 := Y3 - (Y2-Y1);
  40.      LNDIST(PX,PY,X1,Y1,X2,Y2,D1);
  41.      LNDIST(PX,PY,X2,Y2,X3,Y3,D2);
  42.      LNDIST(PX,PY,X3,Y3,X4,Y4,D3);
  43.      LNDIST(PX,PY,X4,Y4,X1,Y1,D4);
  44.      DIST := ABS(XWMAX-XWMIN);
  45.      IF DIST > D1 THEN DIST := D1;
  46.      IF DIST > D2 THEN DIST := D2;
  47.      IF DIST > D3 THEN DIST := D3;
  48.      IF DIST > D4 THEN DIST := D4;
  49.    END;
  50.